
clc;

disp('Dickson')
display('Voltage vectors')
% [in C3 C2 C1 out]
A=[1 -1 0 0 -1; 0 0 1 -1 -1; 0 1 -1 0 -1; 0 0 0 1 -1];
A1=A(1:2,2:end);
A2=A(3:end,2:end);
A3=[1 0 0 0 0; 0 0 1 -1 -1];

NullA1=null(A1);
NullA1=[0 0; NullA1(1:end-1,1:end)];
NullA2=null(A2);
NullA2=[0 0; NullA2(1:end-1,1:end)];
NullA3=null(A3);
NullA3=NullA3(1:end-1,1:end);

dv1=NullA1
dv2=NullA2
dv3=NullA3

% dv_1=[0  0; null(A1)*NullB1(1:2,:)]
% dv_2=null(A4)*NullB1(3:4)
% dv_1=null(A4)*NullB2(1:2)
% dv_2=null(A2)*NullB2(3:4)
% dv_1=null(A2)*NullB3(1:2)
% dv_2=null(A3)*NullB3(3:4)
% dv_1=null(A3)*NullB4(1:2)
% dv_2=null(A1)*NullB4(3:4)

%% Charge vector
display('Charge vectors')
% [in C3 C2 C1 out]
A1=[0 1 0 1 -1;1 0 1 0 1;-1 -1 0 0 0];
NullA1_0=null(A1);
NullA1=NullA1_0(2:end-1,1:end);
A2=[0 1 1 0 0; 0 1 0 1 1; 0 0 1 -1 -1; 1 0 0 0 0]; 
NullA2_0=null(A2);;
NullA2=NullA2_0(2:end-1,1:end);

A3=[0 0 1 1 0; 0 0 0 1 1; 0 1 0 0 0;1 0 0 0 0]; % new 1
NullA3_0=null(A3);
NullA3=NullA3_0(2:end-1,1:end);



B=null([NullA1 NullA2 NullA3]);

q1=[0 0; NullA1]
q2=[0 0; NullA2]
q3=[0; NullA3]
NullQ=null([q1 q2 q3]);

% c=[0 1 1 1]';
% dv1=dv1.*[c c];
% dv2=dv2.*[c c];
[dv1 -q1]
NullQ1=null([dv1 -q1])
% q1=q1*NullQ1(3:4)
NullQ2=null([dv2 -q2])
% q2=q2*NullQ2(3:4)
% NullQ=null([q1 q2 q3])
% q1'*q2
% q3'*q2
% q3'*q1

%%
syms c1 c2 c3 c Q v1 v2 v3

c=[0; c3; c2; c1]
v1=dv1.*[c c]
v2=dv2.*[c c]
v3=dv3.*[c c c]

z=[0 0 0 0]';
Q=[v1 -q1 z z z z z z z z;
 z z z z v2 -q2 z z z z ;
 z z z z z z z z v3 -q3;
 0 0 1 1 0 0 1 1 0 0 0 1;
 1 1 1 1 0 0 0 0 0 0 0 0;
 0 0 0 0 1 1 1 1 0 0 0 0;
 0 0 0 0 0 0 0 0 1 1 1 1
 ]
x=[Q(2:4,:);Q(6:8,:);Q(10:end-1,:)]
solve(det(x)==0,[c3 c2 c1])
% B =Q';
%   [R,basiccol] = rref(B);
%   B = B(:,basiccol)'
% NullA1_0*NullQ1(3:4)*NullQ(1);
% NullA2_0*NullQ2(3:4)*NullQ(2);
% NullA3_0*NullQ(3);
